/**
 * 请求拦截
 * @param {Object} http
 */
import CryptoJS from 'crypto-js';
// 签名Key：
const appSecret = 'vuWiRc3hpoPdxpxqVpzt@SPx8UvZ!f8I';
//AES加密key //十六位十六进制数作为密钥
const aesKey = '1234123412ABCDEF';
//AES加密iv //十六位十六进制数作为密钥
const aesIV = 'ABCDEF1234123412';

const key = CryptoJS.enc.Utf8.parse(aesKey)
const iv = CryptoJS.enc.Utf8.parse(aesIV)

// 签名规则
function getSign(param){
	let sign = '',key = [],p = Object.assign({},param);
	//参数排序 
	p.key = appSecret;
	key = Object.keys(p);
	// _.forIn(p, (v, k) => { key.push(k) });
	key.sort(); 
	//生成签名字符串 
	key.map((v, k) => { 
		p[v] = (p[v] != null && p[v] != undefined) ? p[v] : ''; 
		if (typeof (p[v]) === 'object') { 
			p[v] = JSON.stringify(p[v]); 
		}
		sign += `&${v}=${p[v]}`;
	})
	sign = sign.substr(1); 
	sign = CryptoJS.MD5(CryptoJS.MD5(sign) + appSecret);
	sign = sign.toString(); 
	return sign;
}

module.exports = (vm) => {
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
			// 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
			// let token = vm.$store.state.$token;
			// if(config.method == 'GET' || config.method == "UPLOAD"){
			// 	config.params = config.params || {};
			// 	token && (config.params.token = token);
			// 	config.params.sign = getSign(config.params);
			// }else{
			// 	config.data = config.data || {};
			// 	token && (config.data.token = token);
			// 	config.data.sign = getSign(config.data);
			// }
			// config.header['Content-Type'] = 'multipart/form-data';
			
			
			// 可以在此通过vm引用vuex中的变量，具体值在vm.$store.state中
			// console.log(vm.$store.state);
			console.log(config)
			return config
		}, (config) => // 可使用async await 做异步操作
		Promise.reject(config))
}